//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// 
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU Lesser General Public License for more details.
// 
// You should have received a copy of the GNU Lesser General Public License
// along with this program.  If not, see http://www.gnu.org/licenses/.
// 

package tirt.test;


import tirt.profilers.TokenBucketProfiler;
import tirt.profilers.LoadSheddingProfiler;
import ned.IdealChannel;
import tirt.schedulers.FcfsScheduler;
import tirt.channels.BitrateChannel;
import tirt.schedulers.RoundRobinScheduler;
import tirt.sinks.SimpleSink;
import tirt.profilers.LeakyBucketProfiler;
import tirt.admission.PriorityControlAdmissionControl;
import tirt.schedulers.WeightedRoundRobinScheduler;
import tirt.generators.MarkovModulatedPoissonProcessGenerator;
import tirt.generators.OnOffGenerator;


//
// TODO documentation
//
// @author Seweryn
//
network general_test_9
{
    @display("bgb=852,584");
    submodules:
        OOG1: OnOffGenerator {
            @display("p=63,59");
        }
        OOG2: OnOffGenerator {
            @display("p=63,133");
        }
        OOG3: OnOffGenerator {
            @display("p=63,205");
        }
        PPG1: MarkovModulatedPoissonProcessGenerator {
            @display("p=63,283");
        }
        PPG2: MarkovModulatedPoissonProcessGenerator {
            @display("p=63,355");
        }
        PPG3: MarkovModulatedPoissonProcessGenerator {
            @display("p=63,429");
        }
        PCA: PriorityControlAdmissionControl {
            @display("p=350,274");
        }
        OUT: SimpleSink {
            @display("p=700,275");
        }
        LBP: LeakyBucketProfiler {
            @display("p=447,275");
        }
        FCS: FcfsScheduler {
            @display("p=570,275");
        }
    connections:
        OOG2.out --> BitrateChannel --> PCA.in++;
        OOG3.out --> BitrateChannel --> PCA.in++;
        PPG1.out --> BitrateChannel --> PCA.in++;
        PPG2.out --> BitrateChannel --> PCA.in++;
        PPG3.out --> BitrateChannel --> PCA.in++;
        OOG1.out --> BitrateChannel --> PCA.in++;
        PCA.out --> BitrateChannel --> LBP.in++;
        LBP.out --> FCS.in++;
        FCS.out --> OUT.in++;
}

